package hyl.base.flow.chart;

import java.math.BigDecimal;
import hyl.core.data.IMap;

public interface IAttribute {
	String getId();
	/**
	 * 判断该节点是否有属性的值 等于值
	 * 
	 * @param 属性
	 * @param 值
	 * @return
	 */
	boolean hasAttr(String 属性, Object 值);

	boolean hasAttr(String 属性);

	boolean hasAttrs(String... 属性集);

	/**
	 * 为节点设置属性值
	 * 
	 * @param 属性
	 * @param 值
	 */
	void putAttr(String 属性, Object 值);

	/**
	 * 添加属性
	 * 
	 * @param 属性
	 */
	void addAttr(String 属性);

	/**
	 * 减一
	 * 
	 * @param 属性
	 * @return
	 */
	int decAttr(String 属性);

	/**
	 * 加一
	 * 
	 * @param 属性
	 * @return
	 */
	int incAttr(String 属性);

	/**
	 * 删除属性
	 * 
	 * @param 属性
	 */
	void delAttr(String 属性);

	void clearAttr();

	/**
	 * 获取节点的属性值
	 * 
	 * @param 属性
	 * @return
	 */
	Object getAttr(String 属性);

	int getAttrInt(String 属性);

	long getAttrLong(String 属性);

	String getAttrString(String 属性);

	BigDecimal getAttrDecimal(String 属性);

	Number getAttrNum(String 属性);

	char getAttrChar(String 属性);

	boolean getAttrBool(String 属性);

	byte[] getAttrBytes(String 属性);

	/**
	 * 获取所有属性值
	 * 
	 * @return
	 */
	IMap<String, Object> getAttrs();

}
